package com.moli.iov.base.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.moli.iov.base.enums.DictTypeTag;
import com.moli.iov.base.model.dto.DictDataQueryByCodeDto;
import com.moli.iov.base.model.dto.DictDataQueryByTypeDto;
import com.moli.iov.base.model.dto.DictTypeDto;
import com.moli.iov.base.model.po.DictData;
import com.moli.iov.rest.RestResponse;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 字典 服务类
 * </p>
 *
 * @author zph
 * @since 2018-12-11
 */
public interface IDictDataService extends IService<DictData> {

    /**
     * 获取Map<String,Map<String,String>>值
     *
     * @param dictTypeDto
     * @return
     */
     RestResponse<Map<String, Map<String, String>>> queryDictMaps(DictTypeDto dictTypeDto);
    /**
     * 获取value值
     *
     * @param dictDataQueryByCodeDto
     * @return
     */
    RestResponse queryValueByCode(DictDataQueryByCodeDto dictDataQueryByCodeDto);

    /**
     * 根据类型获取字典，先查询缓存，缓存没有在查询数据库
     *
     * @param dictDataQueryByTypeDto
     * @return
     */
    RestResponse<List<DictData>> queryListByType(DictDataQueryByTypeDto dictDataQueryByTypeDto);


    /**
     * 根据类型获取字典  code  code
     *
     * @param dictDataQueryByTypeDto
     * @return
     */
    RestResponse<Map<String, String>> queryMapByType(DictDataQueryByTypeDto dictDataQueryByTypeDto);


    /**
     * 查询车辆基础信息字典，包含在线状态，定位状态，报警状态，销售状态，品牌
     * 兼容老接口
     * @return
     */
    RestResponse<Map<String, List<DictData>>> queryBasicDicinfos();

    /**
     * 查询车辆基础信息字典，包含在线状态，定位状态，报警状态，销售状态，品牌
     * @return
     */
    RestResponse<Map<String, List<DictData>>> queryBasicDicinfos(String dictCode);

    /**
     * 根据父类code和dictType查询子类
     * @param pcode
     * @param dictType
     * @return
     */
    RestResponse<List<DictData>> queryDictsByPcode(Integer pcode, String dictType);

    /**
     * 查询所有的字典信息
     * @return
     */
    RestResponse<Map<String,List<DictData>>> queryAllDicts();


    /**
     * 查询所有的字典信息缓存到redis中去
     * @return
     */
    RestResponse cacheAllDict();

    /**
     *
     * @param list
     * @return
     */
    Map<String, Map<String, String>> getDictMaps(List<DictTypeTag> list);



}
